#ifndef __XPOINT_H__
#define __XPOINT_H__

#include "Constants.h"

class XPoint {
public:
	XPoint();
	XPoint(double x, double y, double z);
	XPoint(XPoint *point);
	
	double GetX();
	double GetY();
	double GetZ();
	
	void SetX(double x);
	void SetY(double y);
	void SetZ(double z);
	
	virtual void MoveBy(double x, double y, double z);
	virtual void MoveBy(XPoint *point);
	virtual void Rotate(XPoint *rotationOrigin, double angle, int axis = Z_AXIS);
	virtual void Scale(XPoint *scaleOrigin, double scaleFactor);
	virtual void Shear(double angle);
	virtual void Stretch(XPoint *from, XPoint *to);

	void Negate();

	bool LessThan(XPoint *point);
	bool GreaterThan(XPoint *point);
	bool LessThanEqual(XPoint *point);
	bool GreaterThanEqual(XPoint *point);
	bool Equal(XPoint *point);


private:
	double x;
	double y;
	double z;

};

#endif	// __XPOINT_H__
